Systems and methods for efficient input and output to quantum processors

ABSTRACT

A quantum processor performs input and output which may be performed synchronously. The quantum processor executes a problem to generate a classical output state, which is read out at least partially by an I/O system. The I/O system also transmits a classical input state to by the I/O system, which may include the same qubit-proximate devices used for read-out. The classical input state is written to the qubits, and the quantum processor executes based on the classical input state (e.g., by performing reverse annealing to transform the classical input state to quantum state).

FIELD

This disclosure generally relates to input/output systems and methods for quantum processors.

BACKGROUND

Quantum processors typically have several phases of operation when processing a problem, including programming (input), execution, and read-out (output). Programming and read-out tend to be costly in terms of both time and space. For instance, it is not uncommon for the bulk of devices on a quantum processor to be devoted to input and output. Even then, as quantum processors achieve some level of scale (e.g., expanding to thousands of qubits), some degree of serialization is often required due to, e.g., limitations on the number of devices which may be incorporated into the processor and/or the bandwidth of communication with devices external to the processor. The result is that programming and read-out often dominate the time required to process a problem.

Part of the complexity arises from the physics of quantum processors. In a quantum annealing processor, for example, the processor's qubits generally begin the annealing process in superposition and end the annealing process in a classical state. Programming a processor in superposition (e.g., by applying a transverse field, such as one or more flux biases) and performing read-out of a processor in a classical state (e.g., by latching qubits to adjacent devices to transfer spin state) are markedly different physical operations, generally requiring different devices at some stage of input/output.

Various techniques have been proposed to improve the efficiency of input and/or output for quantum processors. For example, U.S. patent application Ser. No. 15/726,239 discloses braided control lines for certain I/O devices and U.S. patent application Ser. No. 15/572,731 discloses frequency-multiplexed resonator input and/or output. However, I/O times still often dominate the time required for a quantum processor to process a problem.

The foregoing examples of the related art and limitations related thereto are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the drawings.

BRIEF SUMMARY

There exists a need to provide efficient input and/or output for quantum processors. Some aspects of the present disclosure provide systems and methods for synchronous input and output to a quantum processor. The quantum processor comprises a plurality of qubits coupleable to an input-output system comprising a bus. The method is performed by the quantum processor and comprises: executing the problem and thereby generating a first output state based on a problem represented by the quantum processor; reading at least a first portion of the first output state from at least a first subset of the qubits to the bus; transmitting the first portion of the first output state along the bus to an output destination; synchronously with transmitting the first portion of the first output state, transmitting at least a first portion of a first input state along the bus from an input source; writing the first portion of the first input state to the first subset of the qubits; and executing the problem and thereby generate a second output state based on the first portion of the first input state.

In some implementations, executing the problem based on the first portion of the first input state comprises executing the problem in reverse from the first input state to a second output state, the first input state comprising a classical state and the second output state comprising a quantum state.

In some implementations, the quantum processor comprises a quantum annealing processor and executing the problem in reverse comprises reverse annealing.

In some implementations, executing the problem and thereby generating a second output state comprises generating a first intermediate state by reverse annealing and generating the second output state, at least in part, by forward annealing.

In some implementations, the bus comprises a plurality of shift registers and transmitting the at least a first portion of the first input state along the bus synchronously with transmitting the first portion of the first output state along the bus comprises synchronously shifting the first portion of the first input state and the first portion of the first output state along the bus.

In some implementations, the input-output system comprises a plurality of latches, the plurality of qubits coupleable to the bus via the plurality of latches. Reading at least the first portion of the first output state from at least the first subset of the qubits to the bus comprises: reading the first output state from the plurality of qubits to the plurality of latches, and reading at least the first portion of the first output state from at least a first subset of the plurality of latches to the bus, the at least the first subset of the plurality of latches corresponding to the at least the first subset of the qubits.

In some implementations, the method comprises storing at least a second potion of the first output state by the plurality of latches while transmitting at least some of the first portion of the first output state along the bus.

In some implementations, synchronously shifting the first portion of the first input state and the first portion of the first output state along the bus comprises setting a first subset of the plurality of shift registers to latch and setting a second subset of the plurality of shift registers to suppress.

In some implementations, setting the first subset of the plurality of shift registers to latch comprises setting a first latched shift register to latch, the first latched shift register neighboring a first holding shift register in a first direction, and setting the second subset of the plurality of shift registers to suppress comprises setting a first suppressed shift register to suppress, the first suppressed shift register neighboring the first holding shift register in a second direction opposing the first direction, the first holding shift register holding a unit of the first portion of the first input state.

In some implementations, setting the first subset of the plurality of shift registers to latch comprises setting a second latched shift register to latch, the second latched shift register neighboring a second holding shift register in the first direction, and setting the second subset of the plurality of shift registers to suppress comprises setting a second suppressed shift register to suppress, the first suppressed shift register neighboring the second holding shift register in the second direction opposing the first direction, the second holding shift register holding a unit of the first portion of the first output state.

In some implementations, synchronously shifting the first portion of the first input state and the first portion of the first output state along the bus comprises synchronously shifting the first portion of the first input state and the first portion of the first output in the first direction.

In some implementations, the method comprises: reading at least a first portion of the second output state from at least the first subset of the qubits to the bus; transmitting the first portion of the second output state along the bus to the output destination; synchronously with transmitting the first portion of the second output state, transmitting at least a first portion of a second input state along the bus from the input source; writing the first portion of the second input state to the first subset of the qubits; executing the problem and thereby generate a third output state based on the first portion of the second input state.

In some implementations, the method comprises discarding at least a second portion of the first output state.

In one implementation an input-output system for a quantum processor, is provided, the quantum processor comprising a plurality of qubits, the input-output system comprising: an input interface and an output interface, a bus connected between the input interface and the output interface, and a plurality of latches, the bus being communicatively coupled to the plurality of qubits by the plurality of latches.

In other implementations, the input interface and the output interface may each comprise one of a frequency-multiplexed resonator, a frequency and sensitivity tunable resonator, and a digital to analog converter, the plurality of latches may comprise a bus proximate latch, an intermediate latch, and a qubit proximate latch, the qubit proximate latch being coupled to the plurality of qubits, the intermediate latch being coupled to the qubit proximate latch and the bus proximate latch, and the bus proximate latch being coupled to the bus, the bus may comprise a first plurality of shift registers arranged in series and wherein each latch of the plurality of latches comprises a second plurality of shift registers arranged in series, each shift register of the first and second plurality of shift registers may comprise a quantum flux parametron, each quantum flux parametron may be addressed by a flux bias line, and each quantum flux parametron may have a suppressed state wherein the flux bias line introduces zero flux and a latched state wherein the flux bias line introduces non-zero flux, each shift register of the first and second plurality of shift registers may be controllable by at least one of: individually, as subsets of commonly-controlled shift registers, and in groups of shift registers that are in series, and each shift register of the first and second plurality of shift registers is proximately coupled only to independently-controllable shift registers.

BRIEF DESCRIPTION OF THE SEVERAL VIEWS OF THE DRAWING(S)

In the drawings, identical reference numbers identify similar elements or acts. The sizes and relative positions of elements in the drawings are not necessarily drawn to scale. For example, the shapes of various elements and angles are not necessarily drawn to scale, and some of these elements may be arbitrarily enlarged and positionned to improve drawing legibility. Further, the particular shapes of the elements as drawn, are not necessarily intended to convey any information regarding the actual shape of the particular elements and may have been solely selected for ease of recognition in the drawings.

FIG. 1 shows schematically an example hybrid computing system including a classical or digital computer and a quantum computer.

FIG. 2 shows schematically an example I/O system for an example quantum processor such as may be provided by the quantum computer of FIG. 1.

FIG. 3 is a flowchart illustrating an example method for synchronous input and output to an example quantum processor such as the quantum processor of FIG. 2.

FIGS. 4A-4V (collectively and individually FIGS. 4) are schematic diagrams showing an example implementation of the method of FIG. 3 as performed by an example implementation of the example I/O system of FIG. 2. In particular, FIGS. 4A-4V show an example sequence of states of the I/O system, as follows:

FIG. 4A shows schematically the example I/O system after the quantum processor has executed;

FIG. 4B shows schematically the example I/O system after the output state of the quantum processor has been read into qubit-proximate latches;

FIG. 4C shows schematically the example I/O system after the output state of the quantum processor has been shifted into intermediate latches;

FIG. 4D shows schematically the example I/O system after the output state of the quantum processor has been shifted into bus-proximate latches;

FIG. 4E shows schematically the example I/O system after a first portion of the output state of the quantum processor has been written to the bus;

FIGS. 4F-4Q each show schematically the example I/O system after successive iterations of shifting the first portion of the output state along the bus towards an output destination and reading a first portion of an input state along the bus from an input source;

FIG. 4R shows schematically the example I/O system after reading in the first portion of the input state to bus-proximate latches (and further shifting of the first portion of the input state);

FIG. 4S shows schematically the example I/O system after shifting the first portion of the input state to intermediate latches and completing read-out of the first portion of the output state from the bus; and

FIG. 4T shows schematically the example I/O system after substantially repeating the events of FIGS. 4C-4S to read out the remaining portions of output state and read in further portions of input state.

FIG. 4U shows schematically the example I/O system to write an input state, for example synchronously with a read out of output state(s).

FIG. 4V shows schematically the example I/O system after substantially repeating the events of FIGS. 4U to write an input state for example synchronously with a read out of output state(s).

DETAILED DESCRIPTION Preamble

In the following description, certain specific details are set forth in order to provide a thorough understanding of various disclosed implementations. However, one skilled in the relevant art will recognize that implementations may be practiced without one or more of these specific details, or with other methods, components, materials, etc. In other instances, well-known structures associated with computer systems, server computers, and/or communications networks have not been shown or described in detail to avoid unnecessarily obscuring descriptions of the implementations.

Unless the context requires otherwise, throughout the specification and claims that follow, the word “comprising” is synonymous with “including,” and is inclusive or open-ended (i.e., does not exclude additional, unrecited elements or method acts).

Reference throughout this specification to “one implementation” or “an implementation” means that a particular feature, structure or characteristic described in connection with the implementation is included in at least one implementation. Thus, the appearances of the phrases “in one implementation” or “in an implementation” in various places throughout this specification are not necessarily all referring to the same implementation. Furthermore, the particular features, structures, or characteristics may be combined in any suitable manner in one or more implementations.

As used in this specification and the appended claims, the singular forms “a,” “an,” and “the” include plural referents unless the context clearly dictates otherwise. It should also be noted that the term “or” is generally employed in its sense including “and/or” unless the context clearly dictates otherwise.

The headings and Abstract of the Disclosure provided herein are for convenience only and do not interpret the scope or meaning of the implementations.

Quantum Computing Architecture

In classical electrical circuits, complicated and elaborate operations may be carried out by a particular arrangement of simple switching devices, such as transistors. Examples of such arrangements include shift registers, memory arrays, adders, flip-flops, and the like. In the evolving field of superconducting electronics, and in particular superconducting quantum computing, it is essential to develop circuits that implement superconducting analogues of each of these arrangements. These arrangements may similarly be constructed using simple switching devices; however classical switching devices such as the transistor are not appropriate in the superconducting regime. Thus, in many superconducting systems it is important to establish a basic superconducting logic device with which many other circuits and operations may be realized.

An application of superconducting electronics that is of particular interest is in the field of quantum computing. Superconducting circuits are capable of exploiting quantum effects on a macroscopic scale, providing a mechanism for the implementation of quantum computation that is much more manageable than some of the alternatives. As discussed, the fundamental unit of quantum computation is the qubit. Superconducting qubits may come in a variety of forms, including the superconducting flux qubit. A superconducting flux qubit may be realized in the form of a superconducting loop that contains at least one switching device known as a Josephson junction. A quantum processor may then comprise any number of such superconducting flux qubits. Thus, in implementing such a quantum processor, techniques for fabricating large numbers of superconducting flux qubits may be developed, as well as a solid understanding of the operation of such devices. The present systems, methods and apparatuses describe the use of the basic superconducting flux qubit structure as a superconducting switching device in a quantum processor. In an exemplary embodiment, an arrangement of superconducting flux qubits may be implemented as a superconducting flux-based shift register in a superconducting quantum processor. Examples of systems of devices implementing shift registers in quantum processors are provided by, for example, U.S. patent application Ser. No. 15/726,239, incorporated herein by reference.

FIG. 1 shows a hybrid computing system 100 according to at least one exemplary implementation, including a classical or digital computer 102 and a quantum computer 104, that may incorporate various logic devices and/or implement various addressing approaches described herein.

Digital computer 102 comprises one or more digital processors 106, for example one or more single- or multi-core microprocessors, central processor units (CPU), graphical processor units (GPUs), digital signal processors (DSPs), or application specific integrated circuits (ASICs). The digital computer 102 may include one or more user interface components, for example one or more displays 108 a, pointer devices 108 b (e.g., computer mouse, trackball), and keypads or keyboards 108 c, collectively 108. The digital computer 102 may include one or more nontransitory computer- or processor-readable media, for example one or more memories (e.g., volatile memory, static memory, read only memory (ROM), random access memory (RAM)) 110 and/or one or more storage devices or storage drives (e.g., magnetic hard disk drives (HDDs), optical disk drives, solid state drives (SSD), and/or Flash drives) 112. The digital computer 102 may include one or more quantum computer control subsystems 114 that interfaces with the quantum computer 104. The processor(s) 106, memories 110, storage 112 and quantum computer control subsystems 114 may be communicatively coupled via one or more communications channels, for instance one or more buses (e.g., power buses, communications buses, instruction buses, address buses) 116.

The nontransitory computer- or processor-readable media, for example one or more memories 110, stores processor-executable instructions and data which, when executed by one or more processors 106, causes the processors 106 to execute one or more of the various algorithms described herein. The processor-executable instructions and data may, for example, include a basic input and output system set of instructions or “module” 118 a which, when executed, configures the digital computer 102 for operation on boot up. The processor-executable instructions and data may, for example, include an operating system set of instructions or “module” 118 b which, when executed, configures the digital computer 102 for operation, for instance providing various file management services and user interface services. The processor-executable instructions and data may, for example, include a server set of instructions or “module” 118 c which, when executed, configures the digital computer 102 for operation as a server to provide access by other computers to information and services. The processor-executable instructions and data may, for example, include a calculations set of instructions or “module” 118 d which, when executed, configures the digital computer 102 to perform various calculations associated with converting problems into a problem graph and/or post-processing of potential solutions generated by the quantum computer 104. The processor-executable instructions and data may, for example, include a quantum processor set of instructions or “module” 118 d which, when executed, configures the digital computer 102 to map problems from a problem graph to a hardware graph for embedding in a quantum processor 120 of the quantum computer 104 for execution. The processor-executable instructions and data may, for example, include a read out set of instructions or “module” 118 f which, when executed, configures the digital computer 102 to perform various read out functions associated with reading out potential solutions to problems from the quantum computer 104.

The quantum computer 104 comprises the quantum processor 120, which typically includes a plurality of qubits and a plurality of couplers, each coupler selectively operable to couple a respective pair of qubits. The quantum computer 104 includes a qubit control system 122, operatively coupled to control each of the qubits, for example via various interfaces, i.e., inductive interfaces that selectively couple a flux to the qubit. The quantum computer 104 includes a coupler control system 124, operatively coupled to control each of the couplers, for example via various interfaces, i.e., inductive interfaces that selectively couple a flux to the coupler to set a strength of coupling or “coupling strength” of the coupler. The quantum computer 104 includes a read-out control system 126, operatively coupled to control various interfaces operable to read out a state of each of the qubits.

There are various types of quantum processors, such as quantum annealing processors and gate-model quantum processors. Quantum annealing processors generally follow an annealing schedule, which may be determined by the digital computer 102. This process can be described in various ways (e.g., annealing some annealing-time variable s from 0 to 1, changing the energy of a transverse field, and/or mixing a problem Hamiltonian with a disordering Hamiltonian). A simple annealing schedule might involve linearly varying the state of the system (e.g., decrementing s, reducing the energy of the transverse field, and/or moving from a state where the disordering Hamiltonian dominates to one where the problem Hamiltonian dominates.) At least some implementations, quantum annealing processors can execute problems “in reverse”-13 e.g., starting in a classical state with low (e.g., zero) traverse field and annealing toward what would ordinarily be considered an initial state with a high transverse field (e.g., having an energy dominating the energy of the problem Hamiltonian). Examples of such reverse annealing techniques are provided by, for example, U.S. patent application Ser. No. 15/771,606.

Various respective systems, components, structures and algorithms for implementing such are described herein. Many of the described systems, components, structures and algorithms may be implemented individually, while some may be implemented in combination with one another.

Synchronous Input and Output for Quantum Processors

At a high level, at least some implementations of the present disclosure provide methods for operating quantum processors 120 whereby input and output are performed (e.g., substantially simultaneously) by an I/O system comprising one or more input interfaces and one or more output interfaces. For example, and as described in greater detail below, quantum processor 120 may execute a problem to generate a classical output state, which is read out at least partially by the I/O system. The I/O system also transmits a classical input state to devices proximate to at least some qubits of the quantum processor—which may be the same devices used for read-out. The classical input state is written to the qubits, and the quantum processor executes based on the classical input state (e.g., by performing reverse annealing to transform the classical input state to quantum state).

In suitable circumstances, and for appropriate implementations, such methods of operation can reduce the time required to program a quantum processor substantially. For example, in one implementation, the presently-disclosed techniques can reduce non-execution time (which dominates total operation time) by roughly half—a significant decrease. Systems capable of performing such methods will provide quantum processors capable of receiving classical states as input, such as quantum annealing processors capable of reverse annealing from classical input states to quantum states (which may then be annealed to a classical output state).

FIG. 2 is a schematic diagram of an example I/O system 200 for a quantum processor such as quantum processor 120 capable of performing at least some implementations of the methods disclosed herein. System 200 communicates with a higher-order I/O system 202; in FIG. 2, higher-order I/O system 202 is implemented by one or more input interfaces and one or more output interfaces, for instance including frequency-multiplexed resonators 202A, 202B (sometimes referred to as a FMRR architecture), to provide input and output although any suitable implementation providing the I/O functionality described below may be used. In other implementations, an input and an output may be provided by one or more input interfaces and one or more output interfaces in the form of frequency and sensitivity tunable resonators (FASTRs), and digital to analog converters (DACs).

System 200 comprises a bus 210 in communication with higher-order I/O system 202. Bus 210 may comprise, for example, shift registers arranged in series. (Such a bus may be called a “street”.) Bus 210 is in communication with a plurality of qubits 220, e.g. via one or more latches. In the exemplary system 200 of FIG. 2, bus 210 is in communication with each qubit 220 via a series of latches comprising bus-proximate latch 212, intermediate latch 214, and qubit-proximate latch 216 (collectively and individually latches 212, 214, 216). The shift registers of bus 210 and/or latches 212, 214, 216 may comprise, for example, quantum flux parametrons (QFPs).

Shift registers of bus 210 and latches 212, 214, and 216 may be controlled individually or as groups. For example, in the exemplary system 200 of FIG. 2, shift registers 210A, 210B, and 210C are controllable independently of each other, as are latches 214A, 214B, and 214C. For instance, shift register 210A may be controllable as a member of a first subset of commonly-controlled shift registers of bus 210; shift registers 210B and 210C may similarly be controlled as members of further such subsets. In at least one implementation, shift register 210A is controlled by the same control signal as other latches 210 labelled “1” in FIG. 2 (with shift registers 210B and 210C having similar relationships with other latches labelled “2” and “3”, respectively). Qubits 220A, 220B, and 220C are proximately coupled to shift registers 210A, 210B, 210C, respectively, and are identified in FIG. 2 for ease of reference.

In some implementations, such as system 200 depicted in FIG. 2, intermediate latches 214A, 214B, and 214C are independently-controllable substantially as described above with reference to shift registers 210. In FIG. 2, the labels “a”, “b”, “c” connote commonly-controlled subsets of intermediate latches 214. In at least some implementations, such as is depicted in FIG. 2, commonly-controlled subsets of intermediate latches 214 are aligned with commonly-controlled subsets of bus 210 (e.g., so that “a”-labelled latches 214A are in communication with bus 210 via corresponding “1”-labelled shift registers 210A, with “b” and “c” similarly corresponding to “2” and “3”, respectively). In some implementations, latches 212 in communication with latches 214A, 214B, and 214C are commonly-controlled (depicted in FIG. 2 by latches 212 being labelled “u”). In some implementations, latches 216 in communication with latches 214A, 214B, and 214C are commonly-controlled (depicted in FIG. 2 by latches 212 being labelled “v”).

Although the depicted exemplary system 200 of FIG. 2 provides three latches 212, 214, 216 communicatively coupling each qubit 220 to bus 210, and three commonly-controlled subsets of shift registers of bus 210 and intermediate latches 214, it will be appreciated that more or fewer latches 212, 214, 216 may be provided, as appropriate for the characteristics of a given system. For example, consider an implementation of system 200 wherein shift registers and latches 212, 214, 216 provide suppress and latch modes (e.g., as is the case for at least some QFPs), couplings between devices are undirected, and subsets of devices change modes substantially simultaneously. In such implementations, it can be convenient to divide shift registers of bus 210 into at least three subsets and to provide at least three latches 212, 214, 216 for each qubit 220 so that each shift register and intermediate latches 214 is proximately coupled only to independently-controllable devices (e.g., so that a shift register 210A is proximately coupled to shift registers 210B, 210C and intermediate latch 214A is proximately coupled to latches 212, 216). In other implementations, more or fewer devices may be preferable. For example, in implementations where couplings are directed and/or simultaneous shifting is supported without loss of data, it may be feasible to commonly-control all (and/or a contiguous series of) shift registers of bus 210, and/or to divide shift registers of bus 210 into two subsets.

In implementations where the shift registers of bus 210 and latches 212, 214, 216 comprise QFPs, setting these devices to suppressed and latched states may refer to controlling the circulating current within each QFP device. In particular, the circulating current may be controlled through flux bias lines in communication with a compound Josephson junction (CJJ) or another Josephson junction structure. A suppressed state is achieved where no flux is present in the CJJ, and no current is found in the loop of the QFP device. In the suppressed state, the current in the QFP device is not influenced by the current of the surrounding devices and remains at zero. This can also be considered “erasing” the state of the QFP. In contrast, a latched state is achieved where flux is introduced to the CJJ, resulting in the loop of the QFP device being capable of receiving circulating current. The direction of this circulating current will be determined by the current circulating in the neighboring devices. This can also be considered as “copying” the neighboring state. The flux within the CJJ may be determined by a flux bias line communicating with the CJJ structure.

In some implementations whereby coupling between qubits 220 and bus 210 are controllable by other techniques, latches 212, 214, 216 may be omitted.

System 200 can be used for output in general. When qubits 220 execute a problem, they can generate a classical state which can be transmitted to bus 210 (e.g., via latches 212, 214, 216) and transmitted along bus 210 to higher-order I/O system 202. For convenience, and without loss of generality, state will be described as being transmitted from left to right along bus 210 in FIG. 2, although other directions (such as right-to-left) are not excluded by the present disclosure.

FIG. 3 is a flowchart illustrating an example method 300 for synchronous input and output to a quantum processor. FIGS. 4A-4V (collectively and individually FIG. 4) illustrate an example implementation of method 300 as performed by an example implementation of system 200 of FIG. 2. At 302, a quantum processor (such as quantum processor 120) executes a problem. Executing a problem can be performed, for example, as described in various of the references identified herein, as otherwise known in the art, or as described herein; quantum annealing is one example of such execution. Execution results in generation of a classical state. At this moment, the state of the processor is held at least partially in qubits 220. This is depicted in FIG. 4A as output state 400 in qubits 220. For example, qubit 220A holds output state 400A, qubit 220B holds output state 400B, qubit 220C holds output state 400C, and so on, with output state 400 comprising output state 400A-400C and the state of any further qubits used for computing the problem.

At 304, system 200 reads at least a portion of output state 400 from qubits 220. At 306, system 200 writes at least a portion of output state 400 to bus 210. Acts 304 and 306 may be combined (e.g., by writing directly from qubits 220 to bus 210) and/or separate (e.g., by shifting state from qubits 220 to latches 212, 214, 216 at 304 and writing from latches 212, 214, 216 to bus 210 at 306).

FIGS. 4B-4E illustrate an example sequence of operations for performing acts 304 and 306 with system 200. In FIG. 4B, output state 400 is read out of qubits 220 into qubit-proximate latches 216. In at least one implementation, this comprises setting intermediate latches 214 to suppress (to avoid leakage of state) and qubit-proximate latches 216 to latch. In FIG. 4C, output state 400 is shifted to intermediate latches 214, e.g., by setting bus-proximate latches 212 to suppress and intermediate latches to latch. In FIG. 4D, output state 400 is shifted to bus-proximate latches 212, e.g., by setting shift registers of bus 210 to latch and qubit-proximate latches 216 to suppress. In FIG. 4E, a portion of output state 400 (namely the portion comprising output state 400A corresponding to a first commonly-controlled subset of shift registers of bus 210 comprising shift register 210A) is written to bus 210, e.g., by setting shift registers of bus 210 outside of the first subset of shift registers (e.g., the shift registers of subsets labelled “2” and “3” in FIG. 2, referred to herein as the second and third subsets of shift registers respectively) to suppress, a corresponding first subset of intermediate shift registers to suppress, and shift registers of bus 210 in the first subset of shift registers (e.g., shift register 210A and others in the subset labelled “1” in FIG. 2) to latch.

Other portions of output state 400, such as portions comprising output state 400B and 400C corresponding to latches 214 outside of the first subset of latches 214 (e.g., latches 214B, 214C and those labelled “b” or “c” in FIG. 2, referred to herein as the second and third subsets of latches 214 respectively) may be returned to corresponding latches 214 as shown by setting qubit-proximate latches 216 to suppress and setting the corresponding intermediate latches 214 to latch. In some implementations, such as certain implementations where latches 212 are not all commonly-controlled, this shuffling of portions of output state 400 in and out of intermediate latches 214 may be omitted, e.g., by suitably controlling subsets of latches 212.

Returning to FIG. 3, at 310 input state 410 (FIGS. 41-4R) is received by the bus from higher-order I/O system 202 (at 312) and output state 400 is sent from the bus to higher-order I/O system 202 (at 314). Acts 312 and 314 may occur synchronously, which as used herein includes occurring simultaneously, at interleaved times, and/or at overlapping times.

FIGS. 4F-4Q illustrate an example sequence of operations for performing act 312 with system 200 and FIGS. 4F-4S illustrate an example sequence of operations for performing act 314 with system 200. In FIG. 4F, input state 410A is read in from higher-order I/O system 202 (e.g., on the left) and the first subset of output state 400 (said subset comprising output state 400A) is shifted along the bus (e.g., to the right in the view of the drawing sheet). Further units of input state are introduced in subsequent figures and are referred to together with input state 410A, collectively and individually, as input state 410. Shifting state 400, 410 along bus 210 may be performed by, e.g., setting the third subset of shift registers (comprising shift register 210A) and bus-proximate latches 214 to suppress and the second subset of shift registers (comprising shift register 210B) to latch.

FIGS. 4G-4Q each depict further iterations of shifting state 400, 410 along bus 410 by setting shift registers 210 on the “right” (i.e., in the direction of the link to higher-order I/O system 202 used for output and away from the link to higher-order I/O system 202 used for input) of each unit of state 400, 410 to latch and setting shift registers on the “left” (i.e., the opposing direction along bus 210) to suppress. Additional units of input state 410 are read in from higher-order I/O system 202 with spacing which corresponds to the spacing between shift registers of the first subset of shift registers, as shown in FIGS. 41, 4L, and 40. Units of output state 400 are read out by higher-order I/O system 202 as they reach it, as shown in FIGS. 4J, 4M, 4P (and, subsequently, at 4S). Bus-proximate latches 212 remain set to suppress through the operations of FIGS. 4G-4Q.

Returning to FIG. 3, at 320 system 200 reads at least a portion of input state 410 from bus 210. FIGS. 4R-4S illustrate an example sequence of operations for performing acts 320 and 322 with system 200. In FIG. 4R, input state 410 is read out of bus 410 into bus-proximate latches 212, e.g., by setting the third subset of shift registers to suppress and setting bus-proximate latches 212 to latch. (In the depicted example, the second subset of shift registers is also set to latch so as to continue shifting any units of output state 400 which are still on bus 210.) In FIG. 4S, input state 410 is shifted to intermediate latches 414 (and particularly to the first subset of intermediate latches 214, e.g., comprising intermediate latch 214A), e.g., by setting the first subset of shift registers and qubit-proximate latches 216 to suppress and the first subset of intermediate latches 214 to latch. (In the depicted example, the last unit of output state 410 on bus 410 is read out by higher-order I/O system 202 at substantially the same time, though it is not required that read-out of output state 400 be coincident with the operations on input state 410 depicted in FIG. 4S.)

The result of the foregoing acts of method 300 are that at least a portion of output state 400 has been read out to higher-order I/O system 202 and at least a corresponding portion of input state 410 has been synchronously read-in from higher-order I/O system 202. In implementations where only a portion is read-out at a time, method 300 may return to 304 to read-out (and read-in) a further portion. For example, returning to FIG. 4, FIG. 4T shows the result of repeating the foregoing twice (modifying, as necessary, the sequences of latch and suppress operations based on the different location of state 400, 410) to read-out the second subset of output state 400 (comprising state 400B) and the second subset of output state 400 (comprising state 400C) and read-in corresponding second and third subsets of input state 410 (comprising state 410B, 410C, respectively).

At 322 of method 300, input state 410 is written to qubits 220. This may be done all at once, or in portions (e.g., the first subset of input state 410 may be written to qubits 220 as they are received, if system 200 supports it). Acts 320 and 322 may be combined (e.g., by writing directly from bus 210 to qubits 220) and/or separate (e.g., by reading state from bus 210 to latches 212, 214, 216 at 320, and writing from latches 212, 214, 216 to qubits 220 at 322).

FIGS. 4U-V illustrate an example sequence of operations for performing act 322 with system 200. In FIG. 4U input state 410 is shifted to qubit-proximate latches 216, e.g., by setting bus-proximate latches 212 to suppress and qubit-proximate latches to latch. In FIG. 4V input state 410 is written to qubits 220, e.g., by setting intermediate latches 214 to suppress and qubits 220 to latch (and/or otherwise preparing qubits 220 to receive states, depending on their architecture).

At 330 of method 300, quantum processor 120 executes from an initial classical state—namely input state 410. For example, quantum processor may perform reverse annealing as described elsewhere herein, e.g., by reverse annealing to some annealing time s* and then performing some combination of forward annealing, pausing, and reverse annealing to produce a new output state 400, at which point method 300 or any other method for output (and/or, optionally, for input) may be performed.

Method 300 and/or system 200 make it possible, in certain circumstances, to avoid at least some of the overhead typically involved in reprogramming quantum processor 120. For example, in a machine learning application it may be necessary or desirable to sample from a statistical distribution (e.g., for training and/or inference), which may be represented as a problem executable by quantum processor 120, based on some number of binary inputs. Sampling may be performed according to method 300—i.e., by executing the problem to generate a sample at 302, performing synchronous read-out and input at 304-322, and generating a further sample by (in part) execution in reverse at 330. Completing generation of the further sample may involve further execution; for example, 330 may comprise reverse annealing from s=1 to s=s*, and further execution may comprise forward annealing from s=s* to s=1, where s* is some earlier point in the anneal (i.e., any point in [0,1)). Method 300 may be repeated upon generation of the further sample to expedite generation of yet further samples.

As another example, in a sampling application, given some samples for a problem (obtained via any suitable technique—such as executing quantum processor 120 at 302, sampling via a classical computer, and/or generating samples using a hybrid quantum-classical technique), the states of those samples may be programmed to qubits 220 (e.g. at 322). Quantum processor 220 can “explore the valley” near the input states at 330—i.e., search for low-energy solutions to the problem which are similar to the input states. This can, in appropriate circumstances, be a highly efficient way to improve sample diversity, which is desirable in a variety of applications.

In some implementations, method 300 comprises reading out only a first portion of qubits 220 (i.e., not reading out a second portion of qubits 220) prior to executing quantum processor 120 in reverse at 330. For example, a problem may be embedded on quantum processor 120 so that the first portion of qubits 220 do not require read-out via one or more subsets of shift registers of bus 210. For instance, the first portion of qubits 220 may be embedded to align generally with the first and second subsets of shift registers of bus 210, and to avoid alignment with the third subset of shift registers of bus 210. Method 300 may then comprise two iterations of acts 304-322 (to read out the first and second subsets of shift registers of bus 210) without necessarily requiring further iterations to read out remaining output state 400 corresponding to the third subset of shift registers of bus 210. This can reduce the combined reprogramming/read-out time by approximately one-third, relative to a scenario where all subsets of shift registers of bus 210 are read-out.

Such implementations may be suitable, for example, in certain machine learning applications and/or in other contexts. Given a problem Hamiltonian encoding “hidden” and “visible” variables, the problem may be embedded on quantum processor 120 so that the “hidden” variables correspond to a first subset of qubits 220 and the “visible” variables correspond to a second subset of qubits 220. Read-out may comprise reading out only the qubits 220 necessary to obtain the state of all visible variables (e.g., reading out all qubits 220 of the second subset, plus optionally any qubits which are incidentally read-out due to being coupled to the same subset of shift registers of bus 210 and/or for other reasons), and excluding at least some qubits 220 of the first subset from read-out. The qubits 220 of the second subset may be synchronously reprogrammed as described above. Qubits 220 may thus be left with an unmodified state. This may allow for the use of such qubits 220 (and correspondingly the variables they encode) to behave like a memory, as they may retain their state between anneals.

In some implementations, the first and second subsets of qubits are interleaved along a bus 210 (e.g., substantially similarly to the first and second subsets of shift registers of bus 210). In some implementations, the first and second subsets of qubits couple to separate busses and/or to separate contiguous regions of a bus 210, in which case method 300 may comprise reading out the second subset of qubits 220 as described herein and avoiding read-out (to the extent practicable) of the first subset of qubits 220. The state of the first subset of qubits 220 may be discarded, e.g., overwritten or otherwise not read out.

The above described method(s), process(es), or technique(s) could be implemented by a series of processor readable instructions stored on one or more nontransitory processor-readable media. Some examples of the above described method(s), process(es), or technique(s) method are performed in part by a specialized device such as an adiabatic quantum computer or a quantum annealer or a system to program or otherwise control operation of an adiabatic quantum computer or a quantum annealer, for instance a computer that includes at least one digital processor. The above described method(s), process(es), or technique(s) may include various acts, though those of skill in the art will appreciate that in alternative examples certain acts may be omitted and/or additional acts may be added. Those of skill in the art will appreciate that the illustrated order of the acts is shown for exemplary purposes only and may change in alternative examples. Some of the exemplary acts or operations of the above described method(s), process(es), or technique(s) are performed iteratively. Some acts of the above described method(s), process(es), or technique(s) can be performed during each iteration, after a plurality of iterations, or at the end of all the iterations.

The above description of illustrated implementations, including what is described in the Abstract, is not intended to be exhaustive or to limit the implementations to the precise forms disclosed. Although specific implementations of and examples are described herein for illustrative purposes, various equivalent modifications can be made without departing from the spirit and scope of the disclosure, as will be recognized by those skilled in the relevant art. The teachings provided herein of the various implementations can be applied to other methods of quantum computation, not necessarily the exemplary methods for quantum computation generally described above.

The various implementations described above can be combined to provide further implementations. All of the commonly assigned US patent application publications, US patent applications, foreign patents, and foreign patent applications referred to in this specification and/or listed in the Application Data Sheet are incorporated herein by reference, in their entirety, including but not limited to:

-   -   U.S. patent application Ser. No. 15/726,239;     -   U.S. patent application Ser. No. 15/572,731;     -   U.S. patent application Ser. No. 15/771,606; and     -   U.S. patent application Ser. No. 62/851,377.

These and other changes can be made to the implementations in light of the above-detailed description. In general, in the following claims, the terms used should not be construed to limit the claims to the specific implementations disclosed in the specification and the claims, but should be construed to include all possible implementations along with the full scope of equivalents to which such claims are entitled. Accordingly, the claims are not limited by the disclosure. 

1. A method for synchronous input and output to a quantum processor, the quantum processor comprising a plurality of qubits coupleable to an input-output system comprising a bus, the method performed by the quantum processor and comprising: executing a problem by the quantum processor and thereby generate a first output state based on a problem represented by the quantum processor; reading at least a first portion of the first output state from at least a first subset of the qubits to the bus; transmitting the first portion of the first output state along the bus to an output destination; synchronously with transmitting the first portion of the first output state, transmitting at least a first portion of a first input state along the bus from an input source; writing the first portion of the first input state to the first subset of the qubits; and executing the problem by the quantum processor and thereby generate a second output state based on the first portion of the first input state.
 2. The method of claim 1 wherein executing the problem based on the first portion of the first input state comprises executing the problem in reverse from the first input state to a second output state, the first input state comprising a classical state and the second output state comprising a quantum state.
 3. The method of claim 2 wherein the quantum processor comprises a quantum annealing processor and executing the problem in reverse comprises reverse annealing.
 4. The method of claim 3 wherein executing the problem and thereby generate a second output state comprises generating a first intermediate state by reverse annealing and generating the second output state, at least in part, by forward annealing.
 5. The method of claim 1 wherein the bus comprises a plurality of shift registers and transmitting the at least a first portion of the first input state along the bus synchronously with transmitting the first portion of the first output state along the bus comprises synchronously shifting the first portion of the first input state and the first portion of the first output state along the bus.
 6. The method of claim 1 wherein the input-output system comprises a plurality of latches, the plurality of qubits coupleable to the bus via the plurality of latches, and reading at least the first portion of the first output state from at least the first subset of the qubits to the bus comprises: reading the first output state from the plurality of qubits to the plurality of latches, and reading at least the first portion of the first output state from at least a first subset of the plurality of latches to the bus, the at least the first subset of the plurality of latches corresponding to the at least the first subset of the qubits.
 7. The method of claim 6 further comprising storing at least a second potion of the first output state by the plurality of latches while transmitting at least some of the first portion of the first output state along the bus.
 8. The method of claim 5 wherein synchronously shifting the first portion of the first input state and the first portion of the first output state along the bus comprises setting a first subset of the plurality of shift registers to latch and setting a second subset of the plurality of shift registers to suppress.
 9. The method of claim 8 wherein setting the first subset of the plurality of shift registers to latch comprises setting a first latched shift register to latch, the first latched shift register neighboring a first holding shift register in a first direction, and setting the second subset of the plurality of shift registers to suppress comprises setting a first suppressed shift register to suppress, the first suppressed shift register neighboring the first holding shift register in a second direction opposing the first direction, the first holding shift register holding a unit of the first portion of the first input state.
 10. The method of claim 9 wherein setting the first subset of the plurality of shift registers to latch comprises setting a second latched shift register to latch, the second latched shift register neighboring a second holding shift register in the first direction, and setting the second subset of the plurality of shift registers to suppress comprises setting a second suppressed shift register to suppress, the first suppressed shift register neighboring the second holding shift register in the second direction opposing the first direction, the second holding shift register holding a unit of the first portion of the first output state.
 11. The method of claim 9 wherein synchronously shifting the first portion of the first input state and the first portion of the first output state along the bus comprises synchronously shifting the first portion of the first input state and the first portion of the first output in the first direction.
 12. The method of claim 1 further comprising: reading at least a first portion of the second output state from at least the first subset of the qubits to the bus; transmitting the first portion of the second output state along the bus to the output destination; synchronously with transmitting the first portion of the second output state, transmitting at least a first portion of a second input state along the bus from the input source; writing the first portion of the second input state to the first subset of the qubits; and executing the problem and thereby generating a third output state based on the first portion of the second input state.
 13. The method of claim 1 further comprising discarding at least a second portion of the first output state.
 14. A computing system comprising: at least one processor in communication with a quantum processor, the quantum processor comprising a plurality of qubits coupleable to an input-output system comprising a bus; at least one nontransitory processor-readable medium communicatively coupled to the at least one processor, the at least one nontransitory processor-readable medium storing at least one of processor-executable instructions or data which, when executed by the at least one processor, cause the at least one processor to cause the quantum processor to: execute a problem by the quantum processor and thereby generate a first output state based on a problem represented by the quantum processor; read at least a first portion of the first output state from at least a first subset of the qubits to the bus; transmit the first portion of the first output state along the bus to an output destination; synchronously with transmitting the first portion of the first output state, transmit at least a first portion of a first input state along the bus from an input source; write the first portion of the first input state to the first subset of the qubits; and execute the problem by the quantum processor and thereby generate a second output state based on the first portion of the first input state.
 15. The computing system of claim 14 wherein the at least one processor causes the quantum processor to execute the problem in reverse from the first input state to a second output state, the first input state comprising a classical state and the second output state comprising a quantum state.
 16. The computing system of claim 15 wherein the quantum processor comprises a quantum annealing processor and the at least one processor causes the quantum annealing processor to execute the problem in reverse by reverse annealing.
 17. The computing system of claim 16 wherein the at least one processor causes the quantum processor to generate a first intermediate state by reverse annealing and generate the second output state, at least in part, by forward annealing.
 18. The computing system of claim 14 wherein the bus comprises a plurality of shift registers and the at least one processor causes the quantum processor to synchronously shift the first portion of the first input state and the first portion of the first output state along the bus.
 19. The computing system of claim 18 wherein the input-output system comprises a plurality of latches, the plurality of qubits coupleable to the bus via the plurality of latches, and the at least one processor causes the quantum processor to: read the first output state from the plurality of qubits to the plurality of latches, and read at least the first portion of the first output state from at least a first subset of the plurality of latches to the bus, the at least the first subset of the plurality of latches corresponding to the at least the first subset of the qubits.
 20. The computing system of claim 19 wherein the at least one processor further causes the quantum processor to store at least a second potion of the first output state by the plurality of latches while the quantum processor transmits at least some of the first portion of the first output state along the bus.
 21. The computing system of claim 20 wherein the at least one processor causes the quantum processor to set a first subset of the plurality of shift registers to latch and set a second subset of the plurality of shift registers to suppress to synchronously shift the first portion of the first input state and the first portion of the first output state along the bus.
 22. The computing system of claim 21 wherein the at least one processor further causes the quantum processor to set a first latched shift register to latch, the first latched shift register neighboring a first holding shift register in a first direction, and set a first suppressed shift register to suppress, the first suppressed shift register neighboring the first holding shift register in a second direction opposing the first direction, the first holding shift register holding a unit of the first portion of the first input state.
 23. The computing system of claim 22 wherein the at least one processor further causes the quantum processor to set a second latched shift register to latch, the second latched shift register neighboring a second holding shift register in the first direction, and set a second suppressed shift register to suppress, the second suppressed shift register neighboring the second holding shift register in the second direction opposing the first direction, the second holding shift register holding a unit of the first portion of the first output state.
 24. The computing system of claim 23 wherein the at least one processor further causes the quantum processor to shift the first portion of the first input state and the first portion of the first output in the first direction.
 25. The computing system of claim 14, wherein the at least one processor further causes the quantum processor to: read at least a first portion of the second output state from at least the first subset of the qubits to the bus; transmit the first portion of the second output state along the bus to the output destination; synchronously with transmitting the first portion of the second output state, transmit at least a first portion of a second input state along the bus from the input source; write the first portion of the second input state to the first subset of the qubits; and execute the problem and thereby generating a third output state based on the first portion of the second input state.
 26. The computing system of claim 14, wherein the at least one processor further causes the quantum processor to discard at least a second portion of the first output state.
 27. An input-output system for a quantum processor, the quantum processor comprising a plurality of qubits, the input-output system comprising: an input interface and an output interface; a bus connected between the input interface and the output interface; and a plurality of latches, the bus being communicatively coupled to the plurality of qubits by the plurality of latches.
 28. The input-output system of claim 27, wherein the input interface and the output interface each comprise one of a frequency-multiplexed resonator, a frequency and sensitivity tunable resonator, and a digital to analog converter.
 29. The input-output system of claim 27, wherein the plurality of latches comprises a bus proximate latch, an intermediate latch, and a qubit proximate latch, the qubit proximate latch being coupled to the plurality of qubits, the intermediate latch being coupled to the qubit proximate latch and the bus proximate latch, and the bus proximate latch being coupled to the bus.
 30. The input-output system of claim 28, wherein the bus comprises a first plurality of shift registers arranged in series and wherein each latch of the plurality of latches comprises a second plurality of shift registers arranged in series.
 31. The input-output system of claim 30, wherein each shift register of the first and second plurality of shift registers comprises a quantum flux parametron.
 32. The input-output system of claim 31, wherein each quantum flux parametron is addressed by a flux bias line, and wherein each quantum flux parametron has a suppressed state wherein the flux bias line introduces zero flux and a latched state wherein the flux bias line introduces non-zero flux.
 33. The input-output system of claim 32, wherein each shift register of the first and second plurality of shift registers is controllable by at least one of: individually, as subsets of commonly-controlled shift registers, and in groups of shift registers that are in series.
 34. The input-output system of claim 33, wherein each shift register of the first and second plurality of shift registers is proximately coupled only to independently-controllable shift registers. 